package com.ms.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ms.domain.entity.Follow;
import com.ms.domain.entity.UserStats;

public interface FollowService {
    /**
     * 关注用户
     * @param followerId 关注者ID
     * @param followingId 被关注者ID
     */
    void followUser(Integer followerId, Integer followingId);

    /**
     * 取消关注用户
     * @param followerId 关注者ID
     * @param followingId 被关注者ID
     */
    void unfollowUser(Integer followerId, Integer followingId);

    /**
     * 检查是否已关注
     * @param followerId 关注者ID
     * @param followingId 被关注者ID
     * @return 是否已关注
     */
    boolean isFollowing(Integer followerId, Integer followingId);

    /**
     * 获取用户的关注列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 关注列表
     */
    Page<Follow> getFollowingList(Integer userId, Integer page, Integer size);

    /**
     * 获取用户的粉丝列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 粉丝列表
     */
    Page<Follow> getFollowersList(Integer userId, Integer page, Integer size);

    /**
     * 获取用户统计信息
     * @param userId 用户ID
     * @return 用户统计信息
     */
    UserStats getUserStats(Integer userId);

    /**
     * 初始化用户统计数据
     * @param userId 用户ID
     */
    void initializeUserStats(Integer userId);
}